package com.xmx.webmagic.test;

import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.pipeline.FilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.scheduler.BloomFilterDuplicateRemover;
import us.codecraft.webmagic.scheduler.QueueScheduler;
import us.codecraft.webmagic.scheduler.Scheduler;

import java.util.Scanner;

/**
 * @Author Xumx
 * @Date 2021/3/18 22:05
 * @Version 1.0
 */
public class JobProcessor implements PageProcessor {

    //解析页面
    @Override
    public void process(Page page) {
        //解析返回的数据page，并且把解析的结果放到ResultItems中
        //css选择器
        page.putField("div",page.getHtml().css("#line_u12_0 a").all());

        //XPath
        page.putField("div2",page.getHtml().xpath("//li[@id=line_u12_0]/a"));

        //正则表达式
        page.putField("div3",page.getHtml().css("ul.pieces-news li").regex(".*计算机学院.*").all());

        //处理结果API
        page.putField("div4",page.getHtml().css("ul.pieces-news li").regex(".*计算机学院.*").get());
        page.putField("div5",page.getHtml().css("ul.pieces-news li").regex(".*计算机学院.*").toString());

        //获取链接
        //page.addTargetRequests(page.getHtml().css("#line_u12_0").links().all());
        //page.putField("url",page.getHtml().css("h1.news_title").all());

        page.addTargetRequest("https://www.jd.com/news.html?id=37319");
        page.addTargetRequest("https://www.jd.com/news.html?id=37319");
        page.addTargetRequest("https://www.jd.com/news.html?id=37319");



    }

    private Site site = Site.me()
            .setCharset("utf8")        //设置编码
            .setTimeOut(10000)         //设置超时时间，单位是ms毫秒
            .setRetrySleepTime(3000)   //设置重试间隔时间，
            .setSleepTime(3)           //设置重试次数
            ;

    @Override
    public Site getSite() {
        return site;
    }

    //主函数，执行爬虫
    public static void main(String[] args) {
        Spider spider = Spider.create(new JobProcessor())
                .addUrl("http://www.xsyu.edu.cn/xwzx/jcdt.htm")  //设置爬取数据的页面
//                .addPipeline(new FilePipeline("D:\\code\\java\\code\\heima\\crawler\\crawler_webmagic\\src\\main\\resources\\result"))
                .thread(5)
                .setScheduler(new QueueScheduler().setDuplicateRemover(new BloomFilterDuplicateRemover(10000000)));//设置布隆去重过滤器，指定最多对10000000数据进行去重操作

        Scheduler scheduler = spider.getScheduler();

        //执行爬虫
        spider.run();
    }
}
